/* Copyright ©, 2022, ECARX (Hubei) Technology Co., Ltd. All rights reserved.
 *
 * NOTICE: This file contains information which is confidential and proprietary to ECARX
 * (Hubei) Technology Co., Ltd. and/or other developers. No license to any intellectual
 * property rights contained within this file is either granted or implied except as may be
 * provided in an agreement with ECARX (Hubei) Technology Co., Ltd.
 *
 * Any unauthorized copying or distribution of content from this file in whole or in part
 * is prohibited.
 */
#ifndef ECARX_VHAL_CORE_CONFIG_H_
#define ECARX_VHAL_CORE_CONFIG_H_

#include <transfer/ITransfer.h>

#include <condition_variable>
#include <memory>

#include <IVendorVehicleServer.h>
#include "vhal_core/persist/PlatformProfile.h"

namespace ecarx::vhal::core {
/**
 * @brief Used to configure the transport layer object,
  profile implementation object and data storage location required by the framework
 * 
 */
class Config {
    const std::vector<std::shared_ptr<transfer::ITransfer>> mTransfers;
    persist::PlatformProfile* mProfileImpl;
    std::string mDIDDir;
  public:
    explicit Config(const std::vector<std::shared_ptr<transfer::ITransfer>>&,
                    persist::PlatformProfile* profileImpl);
    void setDIDDir(const char* dir);
    std::string getDIDDir() const;

    const std::vector<std::shared_ptr<transfer::ITransfer>>& getTransfers() const;
    persist::PlatformProfile* getProfileImpl() const;
};

}  // namespace ecarx::vhal::core

#endif
